1. Field of the Invention
The present invention relates to an improved data processing system and, in particular, to a method and system for multicomputer data transferring. Still more particularly, the present invention provides a method and system for computer-to-computer session/connection establishing and computer-to-computer data transferring.
2. Description of Related Art
The amount of Internet content continues to grow rapidly and to outpace the ability of search engines to index the exploding amount of information. The largest search engines cannot keep up with the growth as it has been estimated that search engines only index about 5% to 30% of the information content on the Web. Hence, at the current time, the majority of Web content is not classified or indexed by any search engine.
There are currently two broad categories of systems which provide the service of categorizing and locating information on the Web: (1) search engines that return direct hits to sites containing data that match inputted queries, such as AltaVista; (2) Web portals that organize the information into categories and directories, such as Yahoo!. These systems operate using a traditional client-server model with packet-switched data interchange.
Recently, the traditional Web client-server paradigm has been challenged by distributed content-sharing or file-sharing systems that support a peer-to-peer model for exchanging data. In peer-to-peer networks, each computer platform, or node, can operate as a hub, i.e., each node has both client functionality and server functionality. A peer-to-peer network is a logical organization of associated nodes within a larger network of nodes, such as the Internet. Each node in the peer-to-peer network has a list of addresses, most commonly Internet Protocol (IP) addresses, of several other computers within the larger network that are also functioning as peer nodes within the peer-to-peer network. The peer nodes can directly communicate with each other without a central or intermediate server. Typically, each peer node maintains a list of files that it is willing to share with other peer nodes.
Nodes within a peer-to-peer network form a distributed file-sharing system in which the nodes act cooperatively to form a distributed search engine. When a user at a node enters a search query, a copy of the search query is sent to each node in its internal list of peer nodes. Each peer node that receives a search query searches its own databases in an attempt to satisfy the search query; each node also copies the query to each node in its internal list of peer nodes while observing a time-to-live value in the query message. If a resulting query hit is made at a particular node, then that node returns some type of query results to the node that originated the search query. The range of the search quickly fans out amongst a large number of nodes, thereby providing a useful manner for potentially finding new content.
In a peer-to-peer data sharing network, each node participates in a process of connecting and disconnecting with other nodes, and each node may have multiple incoming and outgoing connections that are uploading and/or downloading files. After displaying the query hits to a user of a peer-to-peer application, the user may request to download a file that has been reported as satisfying the search query. Typically, the peer-to-peer protocol provides for the exchange of information relating to the network connection speed of a node, and the user can view these connection speeds to determine from which node the user wants to download a desired file. If the user decides that a particular download is progressing too slowly, then the user can terminate the connection and attempt to download the desired file from another node that has returned a query hit for the file.
A major issue with respect to downloading files in a peer-to-peer network is the quality-of-service characteristics of the nodes in the peer-to-peer network. Given that a peer-to-peer network is inherently decentralized, the physical characteristics of the computers that support the nodes in the peer-to-peer network can vary greatly. A user of a peer-to-peer application has no guarantees with respect to response times, connection speeds, bandwidth usage, or other quality-of-service characteristics. Since the fan-out across an entire distributed peer-to-peer network can be quite large, a user may encounter a wide disparity in the response characteristics of the nodes to which the user's node connects during a peer-to-peer session.
Any peer node has only a limited number of connections that it can reasonably support at any given time. However, prior to requesting the download of a file from a particular node, a user does not have any information on the current load that is being experienced by the particular node. Although the user may know the connection speed of the node, which may lead the user to assume that the download time from the node will be inversely proportional to the connection speed of the node, the node may be experiencing a heavy load with many simultaneous connections. Hence, after requesting to download a file from the node, the user may discover that the download of the file proceeds more slowly than desired, presumably because the node is experiencing a heavier load than the user may deem appropriate.
Therefore, it would be advantageous to provide a method and system for improving response characteristics within a peer-to-peer data sharing network. It would be particularly advantageous to allow a node to indicate an alternate manner for fulfilling a download request if the node determines that its response characteristics would be inadequate if it attempted to fulfill a new download request.